#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/wait.h>
int main()
{
    pid_t id = fork();
    if (id < 0)
    {
        perror("fork");
        exit(1);
    }
    else if (id == 0)
    {
        int n = 5;
        while (n)
        {
            printf("child process,pid=%d,ppid=%d\n", getpid(), getppid());
            sleep(1);
            // n--;
        }
        exit(105);
    }
    else
    {
        printf("parent process,pid=%d,ppid=%d\n", getpid(), getppid());
        int status = 0;
        pid_t ret = waitpid(id, &status, 0);
        if (ret > 0)
        {
            // printf("ret = %d, child number = %d, exit num = %d\n", ret, status & 0x7f, (status >> 8) & 0xff);

            if (WIFEXITED(status))
            {
                printf("Child exited with status %d\n", WEXITSTATUS(status));
            }
            else if (WIFSIGNALED(status))
            {
                printf("Child was terminated by signal %d\n", WTERMSIG(status));
            }
        }
        else
        {
            perror("waitpid");
        }
    }
    return 0;
}
// int main(int argc,char* argv[])
// {
//     if(argc!=2)
//     {
//         printf("Usage:%s 至少要有一个选项\n",argv[0]);
//     }
//     if(strcmp("-a",argv[1])==0)
//     {
//         printf("这是功能一\n");
//     }
//     else if(strcmp("-b",argv[1])==0)
//     {
//         printf("这是功能二\n");
//     }
//     return 0;
// }
// int main(int argc, char *argv[],char *env[])
// {
//     for(int i=0;env[i];i++)
//     {
//         printf("env[%d]:%s\n",i,env[i]);
//     }
//     return 0;
// }